// symbol 的值是唯一的,用来解决,命名冲突
let a = {
    x:1,
    y:2
}
a['x'] = 2
console.log(a)//{x:2,y:2}


// symbol值不能与其他数据类型进行运算
// Symbol 定义的对象属性不能使用for..in便利循环,可以用reflect.ownkeys

// 函数创建
let s1 = Symbol()
console.log(s1,typeof s1)
let s2 = Symbol("描述字符串,类似注释,告诉这个symbol 是用来干什么的")
let s3 = Symbol("描述字符串,类似注释,告诉这个symbol 是用来干什么的")
console.log(s2 ===s3)
// 对象创建,这样创建的symbol 是确定的
let s4 = Symbol.for("学习")
let s25 = Symbol.for("学习")
console.log(s4 === s25)
// Symbol 的应用,为对象添加属性
let obj  ={
    name:"张三",
    age :"20"
}
// 当不知道对象里边的属性的属性的时候,可以添加symbol
let add={
    name:Symbol(),
    age:Symbol()

}
obj[add.name]="我是用symbol添加的"
obj[add.age]="这样不会覆盖以前的属性"
console.log(obj)
// 第二种添加的方法
let obj2  ={
    name:"张三",
    age :"20",
    [Symbol("name")]:"我是用symbol添加的"
}
obj2[Symbol("age")]="不会覆盖以前的属性"
console.log(obj2)